<?php
//Document ----------------- Method-----------
//Require Snoopy and Simple-html-dom
/*
		1. set_url($url) : Return True or False
				+ ĐƯA VÀO URL CỦA TRUYENCV
				+ GET CONTENT CỦA URL, Access content $this->html
				! Fail: This->error=true, access error message : $this->error_message[];
					1. Nếu Link Không Phải TruyenCV
					2. Nếu GET CONTENT Ko được.
		2.story_get_information():Return True or False. Get Thông tin của truyện như name,tacgia,theloai,gioithieu,hinhanh . Acess bằng $this->ten-thuoc-tinh
		3.story_get_links(): Return True or False .Get Link Chuong của toàn bộ Truyện . Access $this->links
		4.story_get_last_chap_url() : Return Link Chương Mới Nhất trên danh sách 5 chương mới nhất của mỗi Truyện
		5.story_get_quyen($str): Return True Or False . Nguồn Đưa vào : Tên Chương Trong Danh Sách Chương. Xem Trong Chương có Tên Quyển Không. Acess $this->quyen.
		6.story_get_chuong_from_url($url):Return Tên Chương Or False . Nguồn Đưa Vào : Url Chương Truyện bên TruyenCV. Nếu Url có tên Chương Kiểu : chuong-123 Thì return "Chương 123", nếu không return False
		7.story_fetch_page(): Return False Hoặc Mảng Dữ Liệu Tên Truyên,Link,Last
*/

class TruyenCV{
 var $story_url='';
 var $story_id='';
 var $story_page='';
 var $story_name='';
 var $story_image='';
 var $story_description='';
 var $story_theloai='';
 var $story_tacgia='';
 var $error=false;
 var $error_message=array();
 var $html='';
 var $links=array();
 var $quyen='';
 var $tt=0;

 function set_url($url){
	if($url!=''){
 		if(strpos($url,'truyencv.com')!==false){
			$this->story_url=$url;
		}else{
			$this->error=true;
			$this->error_message[]='Url Không Đúng TruyenCV.com';
			return false;
		}
	}
	
			if($this->error==false){
					$snoopy = new Snoopy;
					if($snoopy->fetch($this->story_url)){
						$this->html= $snoopy->results;
					
					}else{
						$this->error=true;
						$this->error_message[]='Không Thể Connect To Server';
						return false;
					}
					
			}
				return true;
	
 } // End set _url
 

 
 function story_get_information(){
 	if($this->error==false){
		
			$html=str_get_html($this->html);
			if($this->error==false){
				$this->story_name=$html->find('h1',0)->plaintext;
				$this->story_image=$html->find(".cover",0)->find('img',0)->src;
				$this->story_theloai=$html->find(".prpt",0)->find("p",0)->find('span',1)->plaintext;
			//	$data['info']['converter']=$html->find(".prpt",0)->find("p",1)->find('span',1)->plaintext;
				$this->story_tacgia=$html->find(".prpt",0)->find("p",2)->find('span',1)->plaintext;
				$this->story_description=$html->find("#story_description",0)->plaintext;
				$html->clear();
				return true;
			}else{
				$html->clear();
			return false;
			
			}
		
			
			
		
	}else{//Error==false;
		return false;
	}
 
 }
 //End get story_information------
 
 function story_get_links(){
	 		
		
	 		if($this->error==false){
					$html=str_get_html($this->html);
					foreach($html->find(".table-cm",0)->find(".first") as $vl){
						if($vl->find('a',0)->innertext!=''){
							$row['name']=$vl->find('a',0)->innertext;
							//Find Quyen
							$res=$this->story_get_quyen($row['name']);
							if($res==true){
								$row['name']=$this->quyen." ".$row['name'];
							}else
							if($res==false && $this->quyen!=''){
								$row['name']=$this->quyen." ".$row['name'];
							}
							
							$row['href']=$vl->find('a',0)->href;
							
							//Find Chuong Name alternative
							$res=$this->story_get_chuong_from_url($row['href']);
							if($res!=false){
								$row['tt']=$res[2];
								if(strpos($row['name'],$res[1])!==false){
											
										// Tìm Thấy Tên Chương From URL trong Tên Chương 
											//Không Thay Thế, Hay Thêm Gì Hết, Giu Nguyên Tên Chương
														 // [name] => Chương 103 : Corpsefire
														 // [href] => http://truyencv.com/vo-han-anh-linh-than-toa/chuong-103/
								}else{
									//Không Tìm Thấy Tên Chương From URL trong Tên Chương 
															// 1.Và Tìm Thấy Prefix Quyển Trong Tên Chương=> Thêm Cái Tên Alternative
																	// [name] => Quyển 3 Chương 1 : Corpsefire
																	 // [href] => http://truyencv.com/vo-han-anh-linh-than-toa/chuong-103/
															// 2.Nếu Tên Chương Không Có Quyển, thì phải thay alternative nam với name gốc
																	//  [name] => Chương 10 : Corpsefire
																	 // [href] => http://truyencv.com/vo-han-anh-linh-than-toa/chuong-103/
												if(strpos($row['name'],'Quyển')===false){
														$array=explode(':',$row['name']);
														$row['name']=$res[1]." : ".trim($array['1']);
														
												}else{
												$row['name2']=$res[1];
												}
								}
							}else{
							//Không Tìm Thấy Tên Chương From Url trong Tên Chương
								
							
							}
							//----------------------------
							
							$data['chap_list'][]=$row;
						}
					} //End foreach get step 1 links
					
						//Start step 2 get link ajax-------
						
						if($html->find("#pagingControls",0)){
						//Paging exit;
							$str2= $html->find("#pagingControls",0)->find('a',0)->onclick;
							$str2=str_replace("showChapter(","",$str2);
							$str2=str_replace(");","",$str2);
							$str2=str_replace("'","",$str2);
							$array=explode(',',$str2);
							//GET LINK BY SNOOPY PAGING---------
								$vars=array("showChapter"=>1,"media_id"=>$array['0'],"number"=>$array['1'],"page"=>$array['2'],"type"=>$array['3']);
								$snoopy = new Snoopy;
								 $snoopy->ajaxrequest=true;	
								 $snoopy->httpmethod = "POST"; // is GET by default
								 $snoopy->submit($this->story_url, $vars);
								 $source= $snoopy->results;
								 
								 $html2=str_get_html($source);
										
								foreach($html2->find("#table-cm",0)->find(".first") as $vl){
									$row['name']=$vl->find('a',0)->innertext;
									
										$res=$this->story_get_quyen($row['name']);
										if($res==true){
											$row['name']=$this->quyen." ".$row['name'];
										}else
										if($res==false && $this->quyen!=''){
											$row['name']=$this->quyen." ".$row['name'];
										}
									
									
									
									$row['href']=$vl->find('a',0)->href;
										//Find Chuong Name alternative
									$res=$this->story_get_chuong_from_url($row['href']);
									if($res!=false){
										if(strpos($row['name'],$res[1])!==false){
											//So sanh, nếu tìm thấy tên chương from URL trong Tên Chương => Không Cần Làm Gì
														// [name] => Chương 103 : Corpsefire
														 // [href] => http://truyencv.com/vo-han-anh-linh-than-toa/chuong-103/
										}else{
											//Không Tìm Thấy Tên Chương From URL trong Tên Chương 
															// 1.Và Tìm Thấy Prefix Quyển Trong Tên Chương=> Thêm Cái Tên Alternative
																	// [name] => Quyển 3 Chương 1 : Corpsefire
																	 // [href] => http://truyencv.com/vo-han-anh-linh-than-toa/chuong-103/
															// 2.Nếu Tên Chương Không Có Quyển, thì phải thay alternative nam với name gốc
																	//  [name] => Chương 10 : Corpsefire
																	 // [href] => http://truyencv.com/vo-han-anh-linh-than-toa/chuong-103/
												if(strpos($row['name'],'Quyển')===false){
														$array=explode(':',$row['name']);
														$row['name']=$res[1]." : ".trim($array['1']);
														
												}else{
												$row['name2']=$res[1];
												}
										}
									}
									
									
									$data['chap_list'][]=$row;
									
									 $html2->clear();
								}
							
							//
							
						}
						//End step 2 get link ajax
						$this->links=$data['chap_list'];
						
							$html->clear();
							
						
					return true;
			}else{
					return false;
			}
			
 }//End story_get_links
 
 function story_get_last_chap_url(){
 	$html=str_get_html($this->html);
	$str= $html->find(".chapter",0)->find('a',0)->href;
	$html->clear();
	return $str;
 }
 
 function story_get_quyen($str){
	$pattern="#\((Quyển\s\d{1,7})\)#";
 	preg_match($pattern,$str,$match);
	if($match[1]){
		$this->quyen=$match[1];
		return true;
	}else{
		return false;
	}
 }
 
 function story_get_chuong_from_url($str){
 	//Return Match[1]: Ten Chuong - Chuong 1
			//Match[2]: Thứ Tự From Tên Chương . Chuong 1 => Thứ Tự 1
		$pattern="#\/(chuong-(\d{1,5}))\/#";
		preg_match($pattern,$str,$match);
	
		if($match[1]){
		$name=$match[1];
		$match[1]=str_replace('chuong-','Chương ',$name);
		
		return $match;
		}
		return false;
 }
  function story_get_chuong_from_name($str){
 	//Return Match[1]: Ten Chuong - Chuong 1
			//Match[2]: Thứ Tự From Tên Chương . Chuong 1 => Thứ Tự 1
		$pattern="#\/(Chương\s(\d{1,5}))\/#";
		preg_match($pattern,$str,$match);
	
		if($match[1]){
		return $match;
		}
		return false;
 }

 function story_fetch_page(){
	 	 
		 $html=str_get_html($this->html);
	
	     $k=0;
		 foreach($html->find('.block',0)->find('.table-cm',0)->find('li') as $vl){
						if($k!=0){
							$row['name']=$vl->find('.name',0)->find('a',0)->innertext;
							$row['href']=$vl->find('.name',0)->find('a',0)->href;
							//$row['tacgia']=$vl->find('.author',0)->find('a',0)->find('a',0)->innertext;
							
						//	$val->find(".update",0)->find('span',0)->outertext='';
							$row['last']=str_replace('<span class="h">Mới nhất: </span>','',$vl->find('.update',0)->innertext);
							$data[]=$row;
						}
						$k++;
							
					 
 		}
 	$html->clear();
 	return $data;
 } //eND STORY FETCH PAGE
} //End class TruyenCV

/*
$cv=new TruyenCV;
$cv->set_url('http://truyencv.com/vo-tan-dan-dien/');
$cv->story_get_information();
echo $cv->story_name;
echo "<Br/>";
echo $cv->story_image;
echo "<Br/>";
echo $cv->story_theloai;
echo "<br/>";
echo $cv->story_tacgia;
echo "<br/>";
echo $cv->story_description;
echo "<Br/>";

echo $cv->story_get_last_chap_url();

$res=$cv->story_get_links();
if($res==true){
	
	echo "<pre>";
	print_r($cv->links);
	echo "</pre>";
}

*/
//Fect Page Link
/*
$cv=new TruyenCV;
$cv->set_url('http://truyencv.com/danh-sach/hoan-thanh/');
if($cv->error==false){
	echo "<pre>";
	print_r($cv->story_fetch_page());
	echo "</pre>";
}

*/